package com.qf;

import java.lang.reflect.Method;

public class ReflectTest1 {public static void main(String[] args) throws Exception {

    Class<Tesla> clazz = Tesla.class;
    // 获取private方法getModel，有参数
    System.out.println("获取private方法getModel，有参数");
    System.out.println(clazz.getDeclaredMethod("getModel", String.class));
    // 获取继承的public方法getName，无参数:
    System.out.println("获取继承的public方法getName，无参数");
    System.out.println(clazz.getMethod("getName"));
    // 获取当前类（不包括父类）的所有Method
    System.out.println("获取当前类（不包括父类）的所有Method");
    for (Method declaredMethod : clazz.getDeclaredMethods()) {
        System.out.println(declaredMethod);
    }
    // 获取当前类（包括父类）所有public的Method
    System.out.println("获取当前类（包括父类）所有public的Method");
    for (Method method : clazz.getMethods()) {
        System.out.println(method);
    }
}
}

class Tesla extends Car {
    public String getBrand() {
        System.out.println("Tesla");
        return "Tesla";
    }
    private String getModel(String type) {
        System.out.println(type);
        return type;
    }
}

class Car {
    public String getName() {
        return "Car";
    }
}